{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 1.加载数据\n",
    "data = pd.read_csv(r'I:\\拉勾\\第八阶段\\作业二需求及数据\\Wholesale customers data.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>12669</td>\n",
       "      <td>9656</td>\n",
       "      <td>7561</td>\n",
       "      <td>214</td>\n",
       "      <td>2674</td>\n",
       "      <td>1338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>7057</td>\n",
       "      <td>9810</td>\n",
       "      <td>9568</td>\n",
       "      <td>1762</td>\n",
       "      <td>3293</td>\n",
       "      <td>1776</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>6353</td>\n",
       "      <td>8808</td>\n",
       "      <td>7684</td>\n",
       "      <td>2405</td>\n",
       "      <td>3516</td>\n",
       "      <td>7844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13265</td>\n",
       "      <td>1196</td>\n",
       "      <td>4221</td>\n",
       "      <td>6404</td>\n",
       "      <td>507</td>\n",
       "      <td>1788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>22615</td>\n",
       "      <td>5410</td>\n",
       "      <td>7198</td>\n",
       "      <td>3915</td>\n",
       "      <td>1777</td>\n",
       "      <td>5185</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Channel  Region  Fresh  Milk  Grocery  Frozen  Detergents_Paper  Delicassen\n",
       "0        2       3  12669  9656     7561     214              2674        1338\n",
       "1        2       3   7057  9810     9568    1762              3293        1776\n",
       "2        2       3   6353  8808     7684    2405              3516        7844\n",
       "3        1       3  13265  1196     4221    6404               507        1788\n",
       "4        2       3  22615  5410     7198    3915              1777        5185"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()\n",
    "\"\"\"\n",
    "CHANNEL: 销售渠道，horeca（酒店/餐厅/咖啡厅）或Retail（零售渠道8) ；horeca取1，Retail取2\n",
    "REGION:销售地区，Lison, Oporto or Other；Lison取1，Oporto取2，Other取3\n",
    "FRESH：新鲜商品年度支出\n",
    "MILK：牛奶商品年度支出\n",
    "GROCERY:杂货商品年度支出\n",
    "FROZEN:冷冻品年度支出\n",
    "DETERGENTS_PAPER: 清洁剂和纸制品的年度支出（百万美元）（连续）\n",
    "DELICATESSEN: 熟食产品年度支出（百万美元）\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Channel             0\n",
       "Region              0\n",
       "Fresh               0\n",
       "Milk                0\n",
       "Grocery             0\n",
       "Frozen              0\n",
       "Detergents_Paper    0\n",
       "Delicassen          0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 2.查看数据缺失值\n",
    "data.isna().sum()  # 数据没有缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 440 entries, 0 to 439\n",
      "Data columns (total 8 columns):\n",
      "Channel             440 non-null int64\n",
      "Region              440 non-null int64\n",
      "Fresh               440 non-null int64\n",
      "Milk                440 non-null int64\n",
      "Grocery             440 non-null int64\n",
      "Frozen              440 non-null int64\n",
      "Detergents_Paper    440 non-null int64\n",
      "Delicassen          440 non-null int64\n",
      "dtypes: int64(8)\n",
      "memory usage: 27.6 KB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "      <td>440.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.322727</td>\n",
       "      <td>2.543182</td>\n",
       "      <td>12000.297727</td>\n",
       "      <td>5796.265909</td>\n",
       "      <td>7951.277273</td>\n",
       "      <td>3071.931818</td>\n",
       "      <td>2881.493182</td>\n",
       "      <td>1524.870455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.468052</td>\n",
       "      <td>0.774272</td>\n",
       "      <td>12647.328865</td>\n",
       "      <td>7380.377175</td>\n",
       "      <td>9503.162829</td>\n",
       "      <td>4854.673333</td>\n",
       "      <td>4767.854448</td>\n",
       "      <td>2820.105937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>55.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3127.750000</td>\n",
       "      <td>1533.000000</td>\n",
       "      <td>2153.000000</td>\n",
       "      <td>742.250000</td>\n",
       "      <td>256.750000</td>\n",
       "      <td>408.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>8504.000000</td>\n",
       "      <td>3627.000000</td>\n",
       "      <td>4755.500000</td>\n",
       "      <td>1526.000000</td>\n",
       "      <td>816.500000</td>\n",
       "      <td>965.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>16933.750000</td>\n",
       "      <td>7190.250000</td>\n",
       "      <td>10655.750000</td>\n",
       "      <td>3554.250000</td>\n",
       "      <td>3922.000000</td>\n",
       "      <td>1820.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>112151.000000</td>\n",
       "      <td>73498.000000</td>\n",
       "      <td>92780.000000</td>\n",
       "      <td>60869.000000</td>\n",
       "      <td>40827.000000</td>\n",
       "      <td>47943.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Channel      Region          Fresh          Milk       Grocery  \\\n",
       "count  440.000000  440.000000     440.000000    440.000000    440.000000   \n",
       "mean     1.322727    2.543182   12000.297727   5796.265909   7951.277273   \n",
       "std      0.468052    0.774272   12647.328865   7380.377175   9503.162829   \n",
       "min      1.000000    1.000000       3.000000     55.000000      3.000000   \n",
       "25%      1.000000    2.000000    3127.750000   1533.000000   2153.000000   \n",
       "50%      1.000000    3.000000    8504.000000   3627.000000   4755.500000   \n",
       "75%      2.000000    3.000000   16933.750000   7190.250000  10655.750000   \n",
       "max      2.000000    3.000000  112151.000000  73498.000000  92780.000000   \n",
       "\n",
       "             Frozen  Detergents_Paper    Delicassen  \n",
       "count    440.000000        440.000000    440.000000  \n",
       "mean    3071.931818       2881.493182   1524.870455  \n",
       "std     4854.673333       4767.854448   2820.105937  \n",
       "min       25.000000          3.000000      3.000000  \n",
       "25%      742.250000        256.750000    408.250000  \n",
       "50%     1526.000000        816.500000    965.500000  \n",
       "75%     3554.250000       3922.000000   1820.250000  \n",
       "max    60869.000000      40827.000000  47943.000000  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 3.数据统计信息\n",
    "data.describe()\n",
    "#Fresh到Delicassen列数据量级差别很大，在聚类前要做标准化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "关于标准化、归一化、Normalizer的总结\n",
    "一、数据标准化 StandardScaler (基于特征矩阵的列，将属性值转换至服从正态分布) 标准化是依照特征矩阵的列处理数据，其通过求z-score的方法，将样本的特征值转换到同一量纲下 常用与基于正态分布的算法，比如回归\n",
    "\n",
    "二、数据归一化 MinMaxScaler （区间缩放，基于最大最小值，将数据转换到0,1区间上的） 提升模型收敛速度，提升模型精度 常见用于神经网络\n",
    "\n",
    "三、Normalizer （基于矩阵的行，将样本向量转换为单位向量） 其目的在于样本向量在点乘运算或其他核函数计算相似性时，拥有统一的标准 常见用于文本分类和聚类、logistic回归中也会使用，有效防止过拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 标准化\n",
    "from sklearn.preprocessing import Normalizer\n",
    "data.loc[:,'Fresh':'Delicassen'] = Normalizer().fit_transform(data.loc[:,'Fresh':'Delicassen'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Channel</th>\n",
       "      <th>Region</th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0.708333</td>\n",
       "      <td>0.539874</td>\n",
       "      <td>0.422741</td>\n",
       "      <td>0.011965</td>\n",
       "      <td>0.149505</td>\n",
       "      <td>0.074809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0.442198</td>\n",
       "      <td>0.614704</td>\n",
       "      <td>0.599540</td>\n",
       "      <td>0.110409</td>\n",
       "      <td>0.206342</td>\n",
       "      <td>0.111286</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0.396552</td>\n",
       "      <td>0.549792</td>\n",
       "      <td>0.479632</td>\n",
       "      <td>0.150119</td>\n",
       "      <td>0.219467</td>\n",
       "      <td>0.489619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0.856837</td>\n",
       "      <td>0.077254</td>\n",
       "      <td>0.272650</td>\n",
       "      <td>0.413659</td>\n",
       "      <td>0.032749</td>\n",
       "      <td>0.115494</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0.895416</td>\n",
       "      <td>0.214203</td>\n",
       "      <td>0.284997</td>\n",
       "      <td>0.155010</td>\n",
       "      <td>0.070358</td>\n",
       "      <td>0.205294</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Channel  Region     Fresh      Milk   Grocery    Frozen  Detergents_Paper  \\\n",
       "0        2       3  0.708333  0.539874  0.422741  0.011965          0.149505   \n",
       "1        2       3  0.442198  0.614704  0.599540  0.110409          0.206342   \n",
       "2        2       3  0.396552  0.549792  0.479632  0.150119          0.219467   \n",
       "3        1       3  0.856837  0.077254  0.272650  0.413659          0.032749   \n",
       "4        2       3  0.895416  0.214203  0.284997  0.155010          0.070358   \n",
       "\n",
       "   Delicassen  \n",
       "0    0.074809  \n",
       "1    0.111286  \n",
       "2    0.489619  \n",
       "3    0.115494  \n",
       "4    0.205294  "
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用轮廓系数找到最优K\n",
    "from sklearn.cluster import KMeans\n",
    "from sklearn.metrics import silhouette_score   #轮廓系数\n",
    "Scores = []  #存放轮廓系数\n",
    "for k in range(2,9):\n",
    "    estimator = KMeans(n_clusters=k)  #构造聚类器\n",
    "    estimator.fit(data.loc[:,'Fresh':'Delicassen'])\n",
    "    Scores.append(silhouette_score(data.loc[:,'Fresh':'Delicassen'],estimator.labels_))\n",
    "X = range(2,9)\n",
    "plt.xlabel('k')\n",
    "plt.ylabel('score')\n",
    "plt.plot(X,Scores,'o-')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 建模可视化分析\n",
    "model = KMeans(n_clusters=3,random_state=2022).fit(data.loc[:,'Fresh':'Delicassen'])\n",
    "# model.predict(data.loc['Fresh':'Delicassen'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Fresh</th>\n",
       "      <th>Milk</th>\n",
       "      <th>Grocery</th>\n",
       "      <th>Frozen</th>\n",
       "      <th>Detergents_Paper</th>\n",
       "      <th>Delicassen</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.575088</td>\n",
       "      <td>0.233245</td>\n",
       "      <td>0.279252</td>\n",
       "      <td>0.625425</td>\n",
       "      <td>0.053748</td>\n",
       "      <td>0.109052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.262553</td>\n",
       "      <td>0.488689</td>\n",
       "      <td>0.677848</td>\n",
       "      <td>0.095956</td>\n",
       "      <td>0.266153</td>\n",
       "      <td>0.100561</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.907702</td>\n",
       "      <td>0.171099</td>\n",
       "      <td>0.226181</td>\n",
       "      <td>0.150525</td>\n",
       "      <td>0.049222</td>\n",
       "      <td>0.071186</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Fresh      Milk   Grocery    Frozen  Detergents_Paper  Delicassen\n",
       "0  0.575088  0.233245  0.279252  0.625425          0.053748    0.109052\n",
       "1  0.262553  0.488689  0.677848  0.095956          0.266153    0.100561\n",
       "2  0.907702  0.171099  0.226181  0.150525          0.049222    0.071186"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(model.cluster_centers_,columns=data.loc[:,'Fresh':'Delicassen'].columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2    210\n",
       "1    177\n",
       "0     53\n",
       "dtype: int64"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Series(model.predict(data.loc[:,'Fresh':'Delicassen'])).value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制饼状图\n",
    "plt.pie(pd.Series(model.predict(data.loc[:,'Fresh':'Delicassen'])).value_counts(),\n",
    "       autopct='%1.f%%')\n",
    "plt.legend([0,1,2])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 绘制条形图\n",
    "data1 = data.loc[:,'Fresh':'Delicassen']\n",
    "data1['type'] = pd.Series(model.predict(data.loc[:,'Fresh':'Delicassen']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Fresh', 'Milk', 'Grocery', 'Frozen', 'Detergents_Paper', 'Delicassen',\n",
       "       'type'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data1.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(20,8))\n",
    "a=np.arange(3)\n",
    "plt.bar(a,data1.groupby(by='type')['Fresh'].size())\n",
    "plt.bar(a+0.02,height=data1.groupby(by='type')['Milk'].size(),width=0.4)\n",
    "plt.bar(a+0.04,height=data1.groupby(by='type')['Grocery'].size(),width=0.4)\n",
    "plt.bar(a+0.06,height=data1.groupby(by='type')['Frozen'].size(),width=0.4)\n",
    "plt.bar(a+0.08,height=data1.groupby(by='type')['Detergents_Paper'].size(),width=0.4)\n",
    "plt.bar(a+0.1,height=data1.groupby(by='type')['Delicassen'].size(),width=0.4)\n",
    "plt.xticks([0,1,2])\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
